package com.education.platform.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 用户详细资料表
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("user_profile")
public class UserProfile implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 用户ID
     */
    @TableField("user_id")
    private Long userId;

    /**
     * 真实姓名
     */
    @TableField("real_name")
    private String realName;

    /**
     * 性别
     */
    @TableField("gender")
    private String gender;

    /**
     * 生日
     */
    @TableField("birthday")
    private LocalDate birthday;

    /**
     * 所在城市
     */
    @TableField("city")
    private String city;

    /**
     * 个人简介
     */
    @TableField("intro")
    private String intro;

    /**
     * 擅长科目
     */
    @TableField("subjects")
    private String subjects;
    
    /**
     * 可教年级（JSON格式）
     */
    @TableField("grades")
    private String grades;

    /**
     * 可授课时间段
     */
    @TableField("availability")
    private String availability;

    /**
     * 学历
     */
    @TableField("education")
    private String education;

    /**
     * 学校
     */
    @TableField("school")
    private String school;

    /**
     * 教学经验年数
     */
    @TableField("experience_years")
    private Integer experienceYears;

    /**
     * 时薪
     */
    @TableField("hourly_rate")
    private BigDecimal hourlyRate;

    /**
     * MinIO头像路径
     */
    @TableField("minio_avatar_path")
    private String minioAvatarPath;

    /**
     * 教学经验描述
     */
    @TableField("teaching_experience")
    private String teachingExperience;

    /**
     * 证书列表
     */
    @TableField("certificates")
    private String certificates;

    /**
     * 专业特长
     */
    @TableField("specialties")
    private String specialties;

    /**
     * 教学风格
     */
    @TableField("teaching_style")
    private String teachingStyle;

    /**
     * 自我介绍
     */
    @TableField("self_introduction")
    private String selfIntroduction;

    /**
     * 可授课时间
     */
    @TableField("available_time")
    private String availableTime;

    /**
     * 偏好学生类型
     */
    @TableField("preferred_students")
    private String preferredStudents;

    /**
     * 最低时薪
     */
    @TableField("min_hourly_rate")
    private BigDecimal minHourlyRate;

    /**
     * 最高时薪
     */
    @TableField("max_hourly_rate")
    private BigDecimal maxHourlyRate;

    /**
     * 创建时间
     */
    @TableField(value = "created_at", fill = FieldFill.INSERT)
    private LocalDateTime createdAt;

    /**
     * 更新时间
     */
    @TableField(value = "updated_at", fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updatedAt;
} 